实例教程:协变量调整后的ROC曲线及AUC的计算
在很多情况下,协变量会影响诊断指标值的分布情况。例如,我们在上一篇文章中用到的数据,年龄就会影响卵巢储备功能检测指标的分布。(点击查看文章详情:如何联合多个指标提升诊断准确度?教程来了!)
所以在评价一个诊断指标的准确度时,需要通过调整来去除协变量造成的影响。通常提到调整,大家首先会想到将协变量加入回归模型中,就可以得到调整后的效应量估计。但是这种方法并不适用于计算调整后的诊断准确度,因为这样得到的准确度是联合了多个指标的诊断得分的准确度(详见上篇文章),而不是真正的调整了协变量影响后的诊断指标自身的准确度。这篇文章,我们就介绍一下,如何计算协变量调整后的ROC曲线和AUC值。
还是借用上篇文章的数据,以基础窦卵泡数(AFC)为例,我们根据样本中患者年龄的中位数(34岁)将所有患者分为低年龄组(≤34岁)和高年龄组(>34岁),可以发现低年龄组(实线)的AFC值要高于高年龄组(虚线)的AFC值(实线表示的分布位置比同一颜色的虚线表示的分布位置偏向更高的AFC值)(图1)。
图1. 卵巢低反应/非低反应组AFC指标分年龄组的分布
诊断指标值在协变量组间的差异,会对ROC曲线和AUC的估计有什么影响呢?从图2中我们可以看出,基于全部患者的整体ROC曲线,相比于根据协变量分层的ROC曲线,会得到更高的AUC值。
原因就在于,分层变量本身也是具有一定预测能力的变量。如果我们想要得到诊断试验指标本身的诊断准确度,就需要排除分层变量自身的预测能力对诊断试验表现的影响。
图2. 协变量分组ROC曲线和整体ROC曲线
蓝色:年龄≤34岁,AUC=0.7525
红色:年龄>34岁,AUC=0.7837
黄色:全部患者,AUC=0.7988
Janes和Pepe提出了一种协变量调整ROC曲线(AROC)方法,本文仅介绍这种方法的思想和如何实现。如果对公式感兴趣的小伙伴,可以参考这篇文章:
Accommodating covariates in ROC analysis
全文链接:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2758790/
简单介绍下AROC
AROC的估计分为两步:1. 按照协变量的每个亚组(例如低年龄组和高年龄组),估计诊断指标值在健康人群(control)中的分布,然后根据这个分布,计算每个患病者(case)在所属亚组中的分位值(PV);2. 估计患病者的PV的累积分布函数。
如果协变量是连续型变量,我们就不能根据协变量划分亚组,这时候我们在第1步先建立在健康人群中,诊断指标值对协变量的回归模型,得到残差的分布,然后计算每个患病者的残差在这个分布中对应的分位值。
以上步骤,也叫诊断指标的标准化,我们可以用一句简单的概括来说明这一操作的基本思想:在与患病者特征一致的健康人群中,找到患病者的诊断指标值处于什么位置。
下一步,将会根据上述步骤计算得到的PV(经过标准化的诊断指标,而不是原始指标值)绘制AROC、计算AUC。
详解操作步骤
理论部分到此结束,大家最关心的,肯定是如何实现这种分析。这里我们需要用到stata中的roccurve命令,使用方法如下:
roccurve disease_var test_varlist, adjcov(covarlist) adjmodel(model)
disease_var表示疾病状态(1为患病,2为健康),test_varlist表示诊断试验指标,covarlist表示需要调整的协变量,adjmodel中的model代表协变量调整的模型类型,对于分类协变量选择stratified,对于连续型协变量选择linear。
我们还是以AFC为例,但是这里我们调整了年龄这个协变量。图3中,左图是按照年龄组(低龄/高龄)作为协变量进行调整,右图是将年龄作为连续变量进行调整的结果。
图3. 经年龄调整后的AFC的ROC曲线
TPR(True Positive Rate) = Sensitivity
FPR(False Positive Rate)=1-Specificity
我们可以将原始AFC,AFC按年龄组调整后,AFC按年龄调整后的ROC曲线绘制在一起,来进行对比(图4)。可以发现,在调整了年龄这个协变量之后,AFC的ROC曲线下面积有所减小,这说明年龄对AFC的影响会导致AFC本身的诊断准确度被高估。经调整后的AUC可以去除年龄的影响,正确体现AFC的诊断价值。
图4. 经年龄调整前与调整后的AFC的ROC曲线的对比
如果需要计算协变量调整后的AUC,我们需要用到comproc命令,使用方法如下:
comproc disease_var test_varlist, adjcov(covarlist) adjmodel(model)
其中模型参数与上文中roccurve的设置相同。结果见表1。
以上是调整后ROC曲线在stata中实现的方法,同样的分析,也可以用R来实现,具体参考ROCt包中的adjusted.ROC命令。
https://cran.r-project.org/web/packages/ROCt/index.html
更多阅读
关注医咖会,轻松学习统计学~
快加小咖个人微信(xys2018ykf),拉你进统计讨论群和众多热爱研究的小伙伴们一起交流学习。
点击左下角“阅读原文”,看看医咖会既往推送了哪些统计教程。或者使用电脑打开网址:http://www.mediecogroup.com/,查看70种SPSS教程。